package pre.bookcloud.java21.chapter2.逻辑运算符_布尔逻辑2_14;

/** 2.12逻辑运算符—布尔逻辑 */
public class Lesson214 {
  public static void main(String[] args) {
    /*
    一、逻辑运算符的种类：
      1.逻辑与运算符&&
      2.逻辑或运算符||
      3.逻辑非运算符!
      4.逻辑异或运算符^
     */
    //
    // 逻辑与运算符&&
    boolean a = true;
    boolean b = false;
    boolean c = a && b;
    System.out.println("c:" + c);
    // 逻辑或运算符||
    boolean d = a || b;
    System.out.println("d:" + d);
    // 逻辑非运算符!
    boolean e = !a;
    System.out.println("e:" + e);
    // 逻辑异或运算符^
    boolean f = a ^ b;
    System.out.println("f:" + f);

    /*

    二、与比较运算符结合使用
     */
    // 大于与and使用场景
    int age = 18;
    boolean isAdult = age >= 18 && age <= 60;
    System.out.println("isAdult:" + isAdult);
    // 小于与or使用场景
    int score = 80;
    boolean isPass = score < 60 || score >= 80;
    System.out.println("isPass:" + isPass);
    /*
    三、比较运算符和逻辑运算符的优先级
      1.逻辑非运算符!的优先级最高。
      2.逻辑与运算符&&的优先级高于逻辑或运算符||。
      3.逻辑异或运算符^的优先级低于逻辑与运算符&&和逻辑或运算符||。
      4.逻辑运算符的优先级低于比较运算符。
     */
    // 逻辑运算符的优先级
    boolean g = a && b || c;
    System.out.println("g:" + g);
    // 逻辑运算符的优先级
    boolean h = a || b && c;
    System.out.println("h:" + h);
    // 逻辑非运算符!的优先级
    boolean i = !a && b;
    System.out.println("i:" + i);
    // 与比较运算符结合使用
    boolean j = a && (b || c);
    System.out.println("j:" + j);
  }
}
